package com.js.data.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.js.data.system.dto.DeptDTO;
import com.js.data.system.entity.SysDept;
import com.js.data.system.vo.CommonTreeVO;
import com.js.data.system.vo.DeptTreeVO;
import com.js.data.system.vo.SimpleUserVO;

import java.util.List;


/**
 * <p>
 * 部门 服务类
 * </p>
 *
 * @author wujj
 * @since 2022-09-06
 */
public interface DeptService extends IService<SysDept> {


    /**
     * 部门列表
     *
     * @param parentId 父id
     * @return List<DeptListVO>
     */
    List<DeptTreeVO> treeDept(Long parentId);

    /**
     * 新增部门
     *
     * @param deptDTO 部门表单
     */
    void saveDept(DeptDTO deptDTO);

    /**
     * 修改部门
     *
     * @param id      部门id
     * @param deptDTO 部门表单
     */
    void editDept(Long id, DeptDTO deptDTO);

    /**
     * 删除部门
     *
     * @param id 部门id
     */
    void deleteDept(Long id);

    /**
     * 简单组织机构树
     *
     * @param parentId 父id,默认为0
     * @param orgType  组织机构类型,数据字典key(org_type)
     * @return CommonTreeVO
     */
    List<CommonTreeVO> treeSimpleDept(Long parentId, String orgType);

    /**
     * 查询部门下所有的用户（包括子部门的用户）
     *
     * @param deptId 部门id
     * @return List<SimpleUserVO>
     */
    List<SimpleUserVO> listAllUserByDept(Long deptId);


    /**
     * 查询部门下所以子部门,包含自己
     *
     * @param deptId 部门id
     * @return List<Integer>
     */
    List<Long> listAllChildDeptIdAndSelf(Long deptId);

    /**
     * 查找所有部门
     *
     * @return List<Integer>
     */
    List<Long> listAllDept();





}
